﻿using System;
using System.Collections.Generic;
using System.Data.Entity.Core.EntityClient;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;

namespace Zosnn.DAL
{
    public class ContextFactory
    {

        /// <summary>  
        /// 获取当前数据上下文  
        /// </summary>  
        /// <returns></returns>  
        public static ZosnnDbContext GetCurrentContext()
        {
            ZosnnDbContext _nContext = CallContext.GetData("ZosnnDbContext") as ZosnnDbContext;
            if (_nContext == null)
            {

                _nContext = new ZosnnDbContext();

                //MSDN中讲CallContext提供对每个逻辑执行线程都唯一的数据槽，
                //而在WEB程序里，每一个请求恰巧就是一个逻辑线程所以可以使用
                //CallContext来实现单个请求之内的DbContext单例。
                CallContext.SetData("ZosnnDbContext", _nContext);
            }
            return _nContext;
        }
    }
}